function h = perparticle_position2williechannel( u, M, lambda, d,Ctx)
  
      % 路损相关信息
      C0 = db2pow(-40); % 参考距离时的路损-30dB 功率换算？？？
      D0 = 1; % 参考距离
      L = @(d, alpha)C0*(d/D0)^(-alpha); %路损模型论文给出hAB和hAE表达式：传参（d,alpha）带入L计算
      alpha_ab = 2.2;
      sigmaK2 = db2pow(-80); % 噪声功率，-80dBm 低信噪比，高信噪比改为 -40dBm

      % 提取天线信息
      N = (size(u, 1) - 1) ; % 发射天线个数
      h = zeros(N * M, 1);
      r = [6, 1]';              % 假设Willie的接收坐标是优化过并给定的  [2 × 1]

          t = reshape(u(1:N), [1, N]); % 发射天线坐标 [1 × N]
         
          % 获取天线数量
          %　N = size(t, 2); % 天线数 N

          % 初始化信道方向向量 g
          g = zeros(N * M, 1); % (NM×1复向量)
          rho = zeros(N * M, 1); % (NM×1复向量)　 % 信道的路损
    
          % 构造信道方向向量 g(t, r)
          for n = 1:N
              % 计算从第n个子阵列中心到接收端的距离 
              r_n = sqrt( (t(n) - r(2))^2 + (Ctx - r(1))^2 ); 
            
              % 计算第n个天线的阵列响应向量
              theta = atan2(r(2) - t(n), r(1) - Ctx); % 方向角   % 这里存疑，因为这里的t(:, n)应该用预设的
              a_n = zeros(M, 1); % 子阵列响应向量
              for m = 1:M
                  % 根据公式计算
                  r_nm = sqrt( (t(n) + (m - (M-1)/2) * d - r(2))^2 + (Ctx - r(1))^2 ); 
                  a_n(m) = exp(-1j * 2 * pi / lambda * (r_n + (m - (M-1)/2) * d * sin(theta)));
                  rho((n-1)*M + m) = sqrt(L(r_nm,alpha_ab)/sigmaK2);
              end
              % 将 a_n 拼接到 g
              g((n-1)*M+1 : n*M) = a_n;
          end  

     
          % 信道向量 h
          h = rho .* g;
  
end